package com.perfma.xtest.math;

import org.apache.commons.compress.utils.Lists;

import java.util.List;
import java.util.Stack;

/**
 * @author: junhui.si
 * @date: 2023-10-12 16:24
 **/
public class Tree {

//
//    /**
//     * 前序
//     *
//     * @param node
//     */
//    public void pre(TreeNode node) {
//        if (node != null) {
//            System.out.println(node.value);
//            pre(node.left);
//            pre(node.right);
//        }
//    }
//
//    /**
//     * 中序
//     *
//     * @param node
//     */
//    public void mid(TreeNode node) {
//        if (node != null) {
//            pre(node.left);
//            System.out.println(node.value);
//            pre(node.right);
//        }
//    }
//
//    /**
//     * 后序
//     *
//     * @param node
//     */
//    public void post(TreeNode node) {
//        if (node != null) {
//            pre(node.left);
//            pre(node.right);
//            System.out.println(node.value);
//        }
//    }

//    private List<Integer> treeList;
//
//    public int left(int i) {
//        return 2 * i + 1;
//    }
//
//    public int right(int i) {
//        return 2 * i + 2;
//    }
//
//    public int val(int i ){
//        return treeList.get(i);
//    }
//
//    public void dfs(int i, int type, List<Integer> resultList) {
//        if (i < treeList.size()){
//            return;
//        }
//        if (type == 1) {
//            resultList.add(treeList.get(i));
//        }
//        dfs(left(i), type, resultList);
//        if (type == 2) {
//            resultList.add(treeList.get(i));
//        }
//        dfs(right(i), type, resultList);
//        if (type == 3) {
//            resultList.add(treeList.get(i));
//        }
//    }
//
//    /**
//     * 前
//     */
//    public void pre2() {
//        List<Integer> resultList = Lists.newArrayList();
//        dfs(0, 1, resultList);
//    }
//
//    /**
//     * 中
//     */
//    public void mid2() {
//        List<Integer> resultList = Lists.newArrayList();
//        dfs(0, 2, resultList);
//    }
//
//    /**
//     * 后
//     */
//    public void post2() {
//        List<Integer> resultList = Lists.newArrayList();
//        dfs(0, 3, resultList);
//    }
//
//    /**
//     * 前
//     * @param node
//     */
//    public void pre3(TreeNode node){
//        if (node==null){
//            return;
//        }
//        Stack<TreeNode> stack = new Stack<>();
//        stack.push(node);
//        while (!stack.isEmpty()){
//            node = stack.pop();
//            System.out.printf(node.value);
//            if (node.right!=null){
//                stack.push(node.right);
//            }
//            if (node.left != null) {
//                stack.push(node.left);
//            }
//        }
//    }
//
//    /**
//     * 中
//     * @param node
//     */
//    public void mid3(TreeNode node){
//        if (node==null){
//            return;
//        }
//        Stack<TreeNode> stack = new Stack<>();
//        while (!stack.isEmpty()){
//            TreeNode tmp = stack.pop();
//            System.out.printf(tmp.value);
//            if (tmp.right!=null){
//                stack.push(tmp.right);
//            }
//            if (tmp.left != null) {
//                stack.push(tmp.left);
//            }
//        }
//    }
}
